home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / boot / liloinst.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2008-11-21  |  3KB  |  87 lines

  1. #!/bin/bash
  2. # This script will make almost ANY partition bootable, regardless the filesystem
  3. # used on it. bootinst.sh/.bat is only for FAT filesystems, while this one should
  4. # work everywhere. Moreover it setups a 'slaxchanges' directory to be used for
  5. # persistent changes.
  6.  
  7. set -e
  8. TARGET=""
  9. MBR=""
  10.  
  11. # Find out which partition or disk are we using
  12. MYMNT=$(cd -P $(dirname $0) ; pwd)
  13. while [ "$MYMNT" != "" -a "$MYMNT" != "." -a "$MYMNT" != "/" ]; do
  14.    TARGET=$(egrep "[^[:space:]]+[[:space:]]+$MYMNT[[:space:]]+" /proc/mounts | cut -d " " -f 1)
  15.    if [ "$TARGET" != "" ]; then break; fi
  16.    MYMNT=$(dirname "$MYMNT")
  17. done
  18.  
  19. if [ "$TARGET" = "" ]; then
  20.    echo "Can't find device to install to."
  21.    echo "Make sure you run this script from a mounted device."
  22.    exit 1
  23. fi
  24.  
  25. if [ "$(cat /proc/mounts | grep "^$TARGET" | grep noexec)" ]; then
  26.    echo "The disk $TARGET is mounted with noexec parameter, trying to remount..."
  27.    mount -o remount,exec "$TARGET"
  28. fi
  29.  
  30. MBR=$(echo "$TARGET" | sed -r "s/[0-9]+\$//g")
  31. NUM=${TARGET:${#MBR}}
  32. cd "$MYMNT"
  33.  
  34. # only partition is allowed, not the whole disk
  35. if [ "$MBR" = "$TARGET" ]; then
  36.    echo Error: You must install your system to a partition, not the whole disk
  37.    exit 1
  38. fi
  39.  
  40. clear
  41. echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  42. echo "                        Welcome to Slax boot installer                         "
  43. echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  44. echo
  45. echo "This installer will setup disk $MBR to boot only Slax from $TARGET."
  46. echo "Warning! Master boot record (MBR) of $MBR will be overwritten."
  47. echo "If you use $MBR to boot any existing operating system, it will not work"
  48. echo "anymore. Only Slax will boot from this device. Be careful!"
  49. echo
  50. echo "Press any key to continue, or Ctrl+C to abort..."
  51. read junk
  52. clear
  53.  
  54. echo "Flushing filesystem buffers, this may take a while..."
  55. sync
  56.  
  57. mkdir -p $MYMNT/slaxchanges
  58. if [ $? -ne 0 ]; then
  59.    echo "Make sure to mount the partition read-write." >&2
  60.    exit 5
  61. fi
  62.  
  63. cat << ENDOFTEXT >$MYMNT/boot/lilo.conf
  64. boot=$MBR
  65. prompt
  66. timeout=40
  67. lba32
  68. compact
  69. change-rules
  70. reset
  71. install=text
  72. image=$MYMNT/boot/vmlinuz
  73. initrd=$MYMNT/boot/initrd.gz
  74. label=Slax
  75. root=/dev/ram0
  76. read-write
  77. append = "ramdisk_size=6666 changes=slaxchanges"
  78. ENDOFTEXT
  79.  
  80. echo Updating MBR to setup boot record...
  81. boot/syslinux/lilo -C $MYMNT/boot/lilo.conf -S $MYMNT/boot/ -m $MYMNT/boot/lilo.map
  82. echo "Disk $MBR should be bootable now. Installation finished."
  83.  
  84. echo
  85. echo "Read the information above and then press any key to exit..."
  86. read junk
  87.